package com.test.socket;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @Description
 * @Author xsd
 * @Date 2020/6/21 9:23
 */
public class Server {
    public static void main(String[] args) {
        try {
            //创建一个服务器端的Socket，即ServerSocket,绑定需要监听的端口
            ServerSocket serverSocket = new ServerSocket(8888);
            Socket socket = null;
            //记录连接过服务器的客户端数量
            int count = 0;
            System.out.println("***服务器即将启动，等待客户端的连接***");
            while(true){//循环侦听新的客户端的连接
                //调用accept（）方法侦听，等待客户端的连接以获取Socket实例
                socket = serverSocket.accept();
                //创建新线程
                Thread thread = new Thread(new ServerThread(socket));
                thread.start();

                count++;
                System.out.println("服务器端被连接过的次数："+count);
                InetAddress address = socket.getInetAddress();
                System.out.println("当前客户端的IP为："+address.getHostAddress());
            }
            //serverSocket.close();一直循环监听，不用关闭连接
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    }
/**
 * 1.2 服务器端套路
 *
 * 　　1.创建ServerSocket对象，绑定监听端口。
 *
 * 　　2.通过accept（）方法监听客户端请求。
 *
 * 　　3.连接建立后，通过输入流读取客户端发送的请求信息。
 *
 * 　　4.通过输出流向客户端发送响应信息。
 *
 * 　　5.关闭响应的资源。
 *
 * 1.3 客户端套路
 *
 * 　　1.创建Socket对象，指明需要连接的服务器的地址和端口号。
 *
 * 　　2.连接建立后，通过输出流向服务器发送请求信息。
 *
 * 　　3.通过输入流获取服务器响应的信息。
 *
 * 　　4.关闭相应资源。
 */
